from app.models import db
from datetime import datetime


class Product(db.Model):
    __tablename__ = 'product'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)

    # 所属用户
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    # 基本信息
    code = db.Column(db.String(10), nullable=False)  # 不设 unique，允许多个用户添加同一个 code
    name = db.Column(db.String(255), nullable=False)
    type = db.Column(db.String(50))  # 如 '股票'、'基金'
    industry = db.Column(db.String(100))  # 可选行业分类

    # 用户个性化信息（持仓情况）
    quantity = db.Column(db.Float, nullable=False)  # 持仓数量
    cost_price = db.Column(db.Float, nullable=False)  # 买入均价
    buy_date = db.Column(db.DateTime, default=datetime.utcnow)  # 买入时间
    note = db.Column(db.String(255))  # 用户备注
    latest_price = db.Column(db.Float)  # 可选：系统每次展示时更新（缓存机制）

    # ORM 反向关系（可选）
    user = db.relationship('User', back_populates='products')

    def __repr__(self):
        return f'<Product {self.code} ({self.name}) - User {self.user_id}>'